package com.qinyu.treehole.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qinyu.treehole.entities.Feed;
import com.qinyu.treehole.entities.SimpleFeed;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

@Mapper
public interface FeedMapper extends BaseMapper<Feed> {
    List<SimpleFeed> getForwardAndFeed();

    /**
     * 根据用户id查询得到转发+动态集合（需要过滤匿名）
     * @param userId
     * @return
     */
    List<SimpleFeed> getForwardAndFeedByUserId(@Param("userId") Integer userId);

    /**
     * 根据用户id查询得到转发+动态集合
     * 此时要查的用户id就是登录的用户id本身，显示匿名
     * @param userId
     * @return
     */
    List<SimpleFeed> getForwardAndFeedBySelftUserId(@Param("userId") Integer userId);

    /**
     * 根据用户id集合得到转发+动态集合（需要过滤匿名）
     * 注意！！！传入的集合必须不为空！如果size==0，那么加入一个null！
     * @param userIds
     * @return
     */
    List<SimpleFeed> getForwardAndFeedByUserSet(@Param("set")Set<Integer> userIds);

    /**
     * 根据用户id得到该用户的转发+动态的个数（去除匿名）
     * @param userId
     * @return
     */
    long getUserFeedCountByUserId(@Param("userId")Integer userId);

    /**
     * 根据用户id得到该用户的转发+动态的个数
     * 此时要查的用户id就是登录的用户id本身，得加上匿名
     * @param userId
     * @return
     */
    long getUserFeedCountBySelfUserId(@Param("userId")Integer userId);

    /**
     * 通过内容，模糊查询并返回feed id集合
     * @param content 要模糊查询的内容
     * @return 所有匹配的feed id，按照匹配度排序
     */
    Set<Integer> searchFeedByContent(@Param("content")String content);
}
